<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">-- | Code generation for the Static Pointer Table</span><span>
</span><span id="line-2"></span><span class="hs-comment">--</span><span>
</span><span id="line-3"></span><span class="hs-comment">-- (c) 2014 I/O Tweag</span><span>
</span><span id="line-4"></span><span class="hs-comment">--</span><span>
</span><span id="line-5"></span><span class="hs-comment">-- Each module that uses 'static' keyword declares an initialization function of</span><span>
</span><span id="line-6"></span><span class="hs-comment">-- the form hs_spt_init_\&lt;module&gt;() which is emitted into the _stub.c file and</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- annotated with __attribute__((constructor)) so that it gets executed at</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- startup time.</span><span>
</span><span id="line-9"></span><span class="hs-comment">--</span><span>
</span><span id="line-10"></span><span class="hs-comment">-- The function's purpose is to call hs_spt_insert to insert the static</span><span>
</span><span id="line-11"></span><span class="hs-comment">-- pointers of this module in the hashtable of the RTS, and it looks something</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- like this:</span><span>
</span><span id="line-13"></span><span class="hs-comment">--</span><span>
</span><span id="line-14"></span><span class="hs-comment">-- &gt; static void hs_hpc_init_Main(void) __attribute__((constructor));</span><span>
</span><span id="line-15"></span><span class="hs-comment">-- &gt; static void hs_hpc_init_Main(void) {</span><span>
</span><span id="line-16"></span><span class="hs-comment">-- &gt;</span><span>
</span><span id="line-17"></span><span class="hs-comment">-- &gt;   static StgWord64 k0[2] = {16252233372134256ULL,7370534374096082ULL};</span><span>
</span><span id="line-18"></span><span class="hs-comment">-- &gt;   extern StgPtr Main_r2wb_closure;</span><span>
</span><span id="line-19"></span><span class="hs-comment">-- &gt;   hs_spt_insert(k0, &amp;Main_r2wb_closure);</span><span>
</span><span id="line-20"></span><span class="hs-comment">-- &gt;</span><span>
</span><span id="line-21"></span><span class="hs-comment">-- &gt;   static StgWord64 k1[2] = {12545634534567898ULL,5409674567544151ULL};</span><span>
</span><span id="line-22"></span><span class="hs-comment">-- &gt;   extern StgPtr Main_r2wc_closure;</span><span>
</span><span id="line-23"></span><span class="hs-comment">-- &gt;   hs_spt_insert(k1, &amp;Main_r2wc_closure);</span><span>
</span><span id="line-24"></span><span class="hs-comment">-- &gt;</span><span>
</span><span id="line-25"></span><span class="hs-comment">-- &gt; }</span><span>
</span><span id="line-26"></span><span class="hs-comment">--</span><span>
</span><span id="line-27"></span><span class="hs-comment">-- where the constants are fingerprints produced from the static forms.</span><span>
</span><span id="line-28"></span><span class="hs-comment">--</span><span>
</span><span id="line-29"></span><span class="hs-comment">-- The linker must find the definitions matching the @extern StgPtr &lt;name&gt;@</span><span>
</span><span id="line-30"></span><span class="hs-comment">-- declarations. For this to work, the identifiers of static pointers need to be</span><span>
</span><span id="line-31"></span><span class="hs-comment">-- exported. This is done in 'GHC.Core.Opt.SetLevels.newLvlVar'.</span><span>
</span><span id="line-32"></span><span class="hs-comment">--</span><span>
</span><span id="line-33"></span><span class="hs-comment">-- There is also a finalization function for the time when the module is</span><span>
</span><span id="line-34"></span><span class="hs-comment">-- unloaded.</span><span>
</span><span id="line-35"></span><span class="hs-comment">--</span><span>
</span><span id="line-36"></span><span class="hs-comment">-- &gt; static void hs_hpc_fini_Main(void) __attribute__((destructor));</span><span>
</span><span id="line-37"></span><span class="hs-comment">-- &gt; static void hs_hpc_fini_Main(void) {</span><span>
</span><span id="line-38"></span><span class="hs-comment">-- &gt;</span><span>
</span><span id="line-39"></span><span class="hs-comment">-- &gt;   static StgWord64 k0[2] = {16252233372134256ULL,7370534374096082ULL};</span><span>
</span><span id="line-40"></span><span class="hs-comment">-- &gt;   hs_spt_remove(k0);</span><span>
</span><span id="line-41"></span><span class="hs-comment">-- &gt;</span><span>
</span><span id="line-42"></span><span class="hs-comment">-- &gt;   static StgWord64 k1[2] = {12545634534567898ULL,5409674567544151ULL};</span><span>
</span><span id="line-43"></span><span class="hs-comment">-- &gt;   hs_spt_remove(k1);</span><span>
</span><span id="line-44"></span><span class="hs-comment">-- &gt;</span><span>
</span><span id="line-45"></span><span class="hs-comment">-- &gt; }</span><span>
</span><span id="line-46"></span><span class="hs-comment">--</span><span>
</span><span id="line-47"></span><span>
</span><span id="line-48"></span><span class="hs-pragma">{-# LANGUAGE ViewPatterns, TupleSections #-}</span><span>
</span><span id="line-49"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Iface.Tidy.StaticPtrTable</span><span>
</span><span id="line-50"></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptCreateStaticBinds"><span class="hs-identifier">sptCreateStaticBinds</span></a></span><span>
</span><span id="line-51"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptModuleInitCode"><span class="hs-identifier">sptModuleInitCode</span></a></span><span>
</span><span id="line-52"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span class="hs-comment">{- Note [Grand plan for static forms]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Static forms go through the compilation phases as follows.
Here is a running example:

   f x = let k = map toUpper
         in ...(static k)...

* The renamer looks for out-of-scope names in the body of the static
  form, as always. If all names are in scope, the free variables of the
  body are stored in AST at the location of the static form.

* The typechecker verifies that all free variables occurring in the
  static form are floatable to top level (see Note [Meaning of
  IdBindingInfo] in GHC.Tc.Types).  In our example, 'k' is floatable.
  Even though it is bound in a nested let, we are fine.

* The desugarer replaces the static form with an application of the
  function 'makeStatic' (defined in module GHC.StaticPtr.Internal of
  base).  So we get

   f x = let k = map toUpper
         in ...fromStaticPtr (makeStatic location k)...

* The simplifier runs the FloatOut pass which moves the calls to 'makeStatic'
  to the top level. Thus the FloatOut pass is always executed, even when
  optimizations are disabled.  So we get

   k = map toUpper
   static_ptr = makeStatic location k
   f x = ...fromStaticPtr static_ptr...

  The FloatOut pass is careful to produce an /exported/ Id for a floated
  'makeStatic' call, so the binding is not removed or inlined by the
  simplifier.
  E.g. the code for `f` above might look like

    static_ptr = makeStatic location k
    f x = ...(case static_ptr of ...)...

  which might be simplified to

    f x = ...(case makeStatic location k of ...)...

  BUT the top-level binding for static_ptr must remain, so that it can be
  collected to populate the Static Pointer Table.

  Making the binding exported also has a necessary effect during the
  CoreTidy pass.

* The CoreTidy pass replaces all bindings of the form

  b = /\ ... -&gt; makeStatic location value

  with

  b = /\ ... -&gt; StaticPtr key (StaticPtrInfo &quot;pkg key&quot; &quot;module&quot; location) value

  where a distinct key is generated for each binding.

* If we are compiling to object code we insert a C stub (generated by
  sptModuleInitCode) into the final object which runs when the module is loaded,
  inserting the static forms defined by the module into the RTS's static pointer
  table.

* If we are compiling for the byte-code interpreter, we instead explicitly add
  the SPT entries (recorded in CgGuts' cg_spt_entries field) to the interpreter
  process' SPT table using the addSptEntry interpreter message. This happens
  in upsweep after we have compiled the module (see GHC.Driver.Make.upsweep').
-}</span><span>
</span><span id="line-124"></span><span>
</span><span id="line-125"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-126"></span><span>
</span><span id="line-127"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-128"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span>
</span><span id="line-129"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Utils.html"><span class="hs-identifier">GHC.Core.Utils</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Utils.html#collectMakeStaticArgs"><span class="hs-identifier">collectMakeStaticArgs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-130"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-131"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-132"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Types.html"><span class="hs-identifier">GHC.Driver.Types</span></a></span><span>
</span><span id="line-133"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.html"><span class="hs-identifier">GHC.Types.Id</span></a></span><span>
</span><span id="line-134"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Make.html"><span class="hs-identifier">GHC.Core.Make</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.Make.html#mkStringExprFSWith"><span class="hs-identifier">mkStringExprFSWith</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-135"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Unit.Module.html"><span class="hs-identifier">GHC.Unit.Module</span></a></span><span>
</span><span id="line-136"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-137"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Outputable</span></span><span>
</span><span id="line-138"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-139"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Names.html"><span class="hs-identifier">GHC.Builtin.Names</span></a></span><span>
</span><span id="line-140"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Tc.Utils.Env.html"><span class="hs-identifier">GHC.Tc.Utils.Env</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Utils.Env.html#lookupGlobal"><span class="hs-identifier">lookupGlobal</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-141"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>
</span><span id="line-142"></span><span>
</span><span id="line-143"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.Class.html#"><span class="hs-identifier">Control.Monad.Trans.Class</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.Class.html#lift"><span class="hs-identifier">lift</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-144"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.html#"><span class="hs-identifier">Control.Monad.Trans.State</span></a></span><span>
</span><span id="line-145"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span>
</span><span id="line-146"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Maybe.html#"><span class="hs-identifier">Data.Maybe</span></a></span><span>
</span><span id="line-147"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/GHC.Fingerprint.html#"><span class="hs-identifier">GHC.Fingerprint</span></a></span><span>
</span><span id="line-148"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.LanguageExtensions.html#"><span class="hs-identifier">GHC.LanguageExtensions</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">LangExt</span></span><span>
</span><span id="line-149"></span><span>
</span><span id="line-150"></span><span class="hs-comment">-- | Replaces all bindings of the form</span><span>
</span><span id="line-151"></span><span class="hs-comment">--</span><span>
</span><span id="line-152"></span><span class="hs-comment">-- &gt; b = /\ ... -&gt; makeStatic location value</span><span>
</span><span id="line-153"></span><span class="hs-comment">--</span><span>
</span><span id="line-154"></span><span class="hs-comment">--  with</span><span>
</span><span id="line-155"></span><span class="hs-comment">--</span><span>
</span><span id="line-156"></span><span class="hs-comment">-- &gt; b = /\ ... -&gt;</span><span>
</span><span id="line-157"></span><span class="hs-comment">-- &gt;   StaticPtr key (StaticPtrInfo &quot;pkg key&quot; &quot;module&quot; location) value</span><span>
</span><span id="line-158"></span><span class="hs-comment">--</span><span>
</span><span id="line-159"></span><span class="hs-comment">--  where a distinct key is generated for each binding.</span><span>
</span><span id="line-160"></span><span class="hs-comment">--</span><span>
</span><span id="line-161"></span><span class="hs-comment">-- It also yields the C stub that inserts these bindings into the static</span><span>
</span><span id="line-162"></span><span class="hs-comment">-- pointer table.</span><span>
</span><span id="line-163"></span><span class="annot"><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptCreateStaticBinds"><span class="hs-identifier hs-type">sptCreateStaticBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Types.html#HscEnv"><span class="hs-identifier hs-type">HscEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreProgram"><span class="hs-identifier hs-type">CoreProgram</span></a></span><span>
</span><span id="line-164"></span><span>                     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-type">SptEntry</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreProgram"><span class="hs-identifier hs-type">CoreProgram</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-165"></span><span id="sptCreateStaticBinds"><span class="annot"><span class="annottext">sptCreateStaticBinds :: HscEnv -&gt; Module -&gt; CoreProgram -&gt; IO ([SptEntry], CoreProgram)
</span><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptCreateStaticBinds"><span class="hs-identifier hs-var hs-var">sptCreateStaticBinds</span></a></span></span><span> </span><span id="local-6989586621681181739"><span class="annot"><span class="annottext">HscEnv
</span><a href="#local-6989586621681181739"><span class="hs-identifier hs-var">hsc_env</span></a></span></span><span> </span><span id="local-6989586621681181738"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181738"><span class="hs-identifier hs-var">this_mod</span></a></span></span><span> </span><span id="local-6989586621681181737"><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181737"><span class="hs-identifier hs-var">binds</span></a></span></span><span>
</span><span id="line-166"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Extension -&gt; DynFlags -&gt; Bool
</span><a href="GHC.Driver.Session.html#xopt"><span class="hs-identifier hs-var">xopt</span></a></span><span> </span><span class="annot"><span class="annottext">Extension
</span><a href="../../ghc-boot-th/src/GHC.LanguageExtensions.Type.html#StaticPointers"><span class="hs-identifier hs-var">LangExt.StaticPointers</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681181733"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-167"></span><span>      </span><span class="annot"><span class="annottext">([SptEntry], CoreProgram) -&gt; IO ([SptEntry], CoreProgram)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181737"><span class="hs-identifier hs-var">binds</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-168"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-169"></span><span>      </span><span class="hs-comment">-- Make sure the required interface files are loaded.</span><span>
</span><span id="line-170"></span><span>      </span><span class="annot"><span class="annottext">TyThing
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">HscEnv -&gt; Name -&gt; IO TyThing
</span><a href="GHC.Tc.Utils.Env.html#lookupGlobal"><span class="hs-identifier hs-var">lookupGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">HscEnv
</span><a href="#local-6989586621681181739"><span class="hs-identifier hs-var">hsc_env</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#unpackCStringName"><span class="hs-identifier hs-var">unpackCStringName</span></a></span><span>
</span><span id="line-171"></span><span>      </span><span class="hs-special">(</span><span id="local-6989586621681181731"><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181731"><span class="hs-identifier hs-var">fps</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181730"><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181730"><span class="hs-identifier hs-var">binds'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">StateT Int IO ([SptEntry], CoreProgram)
-&gt; Int -&gt; IO ([SptEntry], CoreProgram)
forall (m :: * -&gt; *) s a. Monad m =&gt; StateT s m a -&gt; s -&gt; m a
</span><a href="../../transformers/src/Control.Monad.Trans.State.Lazy.html#evalStateT"><span class="hs-identifier hs-var">evalStateT</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SptEntry]
-&gt; CoreProgram
-&gt; CoreProgram
-&gt; StateT Int IO ([SptEntry], CoreProgram)
</span><a href="#local-6989586621681181728"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181737"><span class="hs-identifier hs-var">binds</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-172"></span><span>      </span><span class="annot"><span class="annottext">([SptEntry], CoreProgram) -&gt; IO ([SptEntry], CoreProgram)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181731"><span class="hs-identifier hs-var">fps</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181730"><span class="hs-identifier hs-var">binds'</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-173"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-174"></span><span>    </span><span id="local-6989586621681181728"><span class="annot"><span class="annottext">go :: [SptEntry]
-&gt; CoreProgram
-&gt; CoreProgram
-&gt; StateT Int IO ([SptEntry], CoreProgram)
</span><a href="#local-6989586621681181728"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621681181724"><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181724"><span class="hs-identifier hs-var">fps</span></a></span></span><span> </span><span id="local-6989586621681181723"><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181723"><span class="hs-identifier hs-var">bs</span></a></span></span><span> </span><span id="local-6989586621681181722"><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181722"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181722"><span class="hs-identifier hs-var">xs</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-175"></span><span>      </span><span class="hs-special">[</span><span class="hs-special">]</span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">([SptEntry], CoreProgram)
-&gt; StateT Int IO ([SptEntry], CoreProgram)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SptEntry] -&gt; [SptEntry]
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#reverse"><span class="hs-identifier hs-var">reverse</span></a></span><span> </span><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181724"><span class="hs-identifier hs-var">fps</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreProgram -&gt; CoreProgram
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#reverse"><span class="hs-identifier hs-var">reverse</span></a></span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181723"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-176"></span><span>      </span><span id="local-6989586621681181720"><span class="annot"><span class="annottext">CoreBind
</span><a href="#local-6989586621681181720"><span class="hs-identifier hs-var">bnd</span></a></span></span><span> </span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span> </span><span id="local-6989586621681181719"><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181719"><span class="hs-identifier hs-var">xs'</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-177"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621681181718"><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181718"><span class="hs-identifier hs-var">fps'</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181717"><span class="annot"><span class="annottext">CoreBind
</span><a href="#local-6989586621681181717"><span class="hs-identifier hs-var">bnd'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CoreBind -&gt; StateT Int IO ([SptEntry], CoreBind)
</span><a href="#local-6989586621681181716"><span class="hs-identifier hs-var">replaceStaticBind</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBind
</span><a href="#local-6989586621681181720"><span class="hs-identifier hs-var">bnd</span></a></span><span>
</span><span id="line-178"></span><span>        </span><span class="annot"><span class="annottext">[SptEntry]
-&gt; CoreProgram
-&gt; CoreProgram
-&gt; StateT Int IO ([SptEntry], CoreProgram)
</span><a href="#local-6989586621681181728"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SptEntry] -&gt; [SptEntry]
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#reverse"><span class="hs-identifier hs-var">reverse</span></a></span><span> </span><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181718"><span class="hs-identifier hs-var">fps'</span></a></span><span> </span><span class="annot"><span class="annottext">[SptEntry] -&gt; [SptEntry] -&gt; [SptEntry]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181724"><span class="hs-identifier hs-var">fps</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBind
</span><a href="#local-6989586621681181717"><span class="hs-identifier hs-var">bnd'</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBind -&gt; CoreProgram -&gt; CoreProgram
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181723"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CoreProgram
</span><a href="#local-6989586621681181719"><span class="hs-identifier hs-var">xs'</span></a></span><span>
</span><span id="line-179"></span><span>
</span><span id="line-180"></span><span>    </span><span id="local-6989586621681181733"><span class="annot"><span class="annottext">dflags :: DynFlags
</span><a href="#local-6989586621681181733"><span class="hs-identifier hs-var hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HscEnv -&gt; DynFlags
</span><a href="GHC.Driver.Types.html#hsc_dflags"><span class="hs-identifier hs-var hs-var">hsc_dflags</span></a></span><span> </span><span class="annot"><span class="annottext">HscEnv
</span><a href="#local-6989586621681181739"><span class="hs-identifier hs-var">hsc_env</span></a></span><span>
</span><span id="line-181"></span><span>    </span><span id="local-6989586621681181714"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681181714"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681181733"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-182"></span><span>
</span><span id="line-183"></span><span>    </span><span class="hs-comment">-- Generates keys and replaces 'makeStatic' with 'StaticPtr'.</span><span>
</span><span id="line-184"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-185"></span><span>    </span><span class="hs-comment">-- The 'Int' state is used to produce a different key for each binding.</span><span>
</span><span id="line-186"></span><span>    </span><span class="annot"><a href="#local-6989586621681181716"><span class="hs-identifier hs-type">replaceStaticBind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreBind"><span class="hs-identifier hs-type">CoreBind</span></a></span><span>
</span><span id="line-187"></span><span>                      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.Lazy.html#StateT"><span class="hs-identifier hs-type">StateT</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-type">SptEntry</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreBind"><span class="hs-identifier hs-type">CoreBind</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-188"></span><span>    </span><span id="local-6989586621681181716"><span class="annot"><span class="annottext">replaceStaticBind :: CoreBind -&gt; StateT Int IO ([SptEntry], CoreBind)
</span><a href="#local-6989586621681181716"><span class="hs-identifier hs-var hs-var">replaceStaticBind</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-type">NonRec</span></a></span><span> </span><span id="local-6989586621681181711"><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181711"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681181710"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181710"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681181709"><span class="annot"><span class="annottext">Maybe SptEntry
</span><a href="#local-6989586621681181709"><span class="hs-identifier hs-var">mfp</span></a></span></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681181708"><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181708"><span class="hs-identifier hs-var">b'</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181707"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181707"><span class="hs-identifier hs-var">e'</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CoreBndr
-&gt; CoreExpr -&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr))
</span><a href="#local-6989586621681181706"><span class="hs-identifier hs-var">replaceStatic</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181711"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181710"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-189"></span><span>                                        </span><span class="annot"><span class="annottext">([SptEntry], CoreBind) -&gt; StateT Int IO ([SptEntry], CoreBind)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe SptEntry -&gt; [SptEntry]
forall a. Maybe a -&gt; [a]
</span><a href="../../base/src/Data.Maybe.html#maybeToList"><span class="hs-identifier hs-var">maybeToList</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe SptEntry
</span><a href="#local-6989586621681181709"><span class="hs-identifier hs-var">mfp</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreBndr -&gt; CoreExpr -&gt; CoreBind
forall b. b -&gt; Expr b -&gt; Bind b
</span><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-var">NonRec</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181708"><span class="hs-identifier hs-var">b'</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181707"><span class="hs-identifier hs-var">e'</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-190"></span><span>    </span><span class="annot"><a href="#local-6989586621681181716"><span class="hs-identifier hs-var">replaceStaticBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-type">Rec</span></a></span><span> </span><span id="local-6989586621681181703"><span class="annot"><span class="annottext">[(CoreBndr, CoreExpr)]
</span><a href="#local-6989586621681181703"><span class="hs-identifier hs-var">rbs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-191"></span><span>      </span><span class="hs-special">(</span><span id="local-6989586621681181702"><span class="annot"><span class="annottext">[Maybe SptEntry]
</span><a href="#local-6989586621681181702"><span class="hs-identifier hs-var">mfps</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181701"><span class="annot"><span class="annottext">[(CoreBndr, CoreExpr)]
</span><a href="#local-6989586621681181701"><span class="hs-identifier hs-var">rbs'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Maybe SptEntry, (CoreBndr, CoreExpr))]
-&gt; ([Maybe SptEntry], [(CoreBndr, CoreExpr)])
forall a b. [(a, b)] -&gt; ([a], [b])
</span><a href="../../base/src/GHC.List.html#unzip"><span class="hs-identifier hs-var">unzip</span></a></span><span> </span><span class="annot"><span class="annottext">([(Maybe SptEntry, (CoreBndr, CoreExpr))]
 -&gt; ([Maybe SptEntry], [(CoreBndr, CoreExpr)]))
-&gt; StateT Int IO [(Maybe SptEntry, (CoreBndr, CoreExpr))]
-&gt; StateT Int IO ([Maybe SptEntry], [(CoreBndr, CoreExpr)])
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">((CoreBndr, CoreExpr)
 -&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr)))
-&gt; [(CoreBndr, CoreExpr)]
-&gt; StateT Int IO [(Maybe SptEntry, (CoreBndr, CoreExpr))]
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Traversable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m (t b)
</span><a href="../../base/src/Data.Traversable.html#mapM"><span class="hs-identifier hs-var">mapM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CoreBndr
 -&gt; CoreExpr
 -&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr)))
-&gt; (CoreBndr, CoreExpr)
-&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr))
forall a b c. (a -&gt; b -&gt; c) -&gt; (a, b) -&gt; c
</span><a href="../../base/src/Data.Tuple.html#uncurry"><span class="hs-identifier hs-var">uncurry</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
-&gt; CoreExpr -&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr))
</span><a href="#local-6989586621681181706"><span class="hs-identifier hs-var">replaceStatic</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[(CoreBndr, CoreExpr)]
</span><a href="#local-6989586621681181703"><span class="hs-identifier hs-var">rbs</span></a></span><span>
</span><span id="line-192"></span><span>      </span><span class="annot"><span class="annottext">([SptEntry], CoreBind) -&gt; StateT Int IO ([SptEntry], CoreBind)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Maybe SptEntry] -&gt; [SptEntry]
forall a. [Maybe a] -&gt; [a]
</span><a href="../../base/src/Data.Maybe.html#catMaybes"><span class="hs-identifier hs-var">catMaybes</span></a></span><span> </span><span class="annot"><span class="annottext">[Maybe SptEntry]
</span><a href="#local-6989586621681181702"><span class="hs-identifier hs-var">mfps</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[(CoreBndr, CoreExpr)] -&gt; CoreBind
forall b. [(b, Expr b)] -&gt; Bind b
</span><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-var">Rec</span></a></span><span> </span><span class="annot"><span class="annottext">[(CoreBndr, CoreExpr)]
</span><a href="#local-6989586621681181701"><span class="hs-identifier hs-var">rbs'</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-193"></span><span>
</span><span id="line-194"></span><span>    </span><span class="annot"><a href="#local-6989586621681181706"><span class="hs-identifier hs-type">replaceStatic</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span>
</span><span id="line-195"></span><span>                  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.Lazy.html#StateT"><span class="hs-identifier hs-type">StateT</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-type">SptEntry</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-196"></span><span>    </span><span id="local-6989586621681181706"><span class="annot"><span class="annottext">replaceStatic :: CoreBndr
-&gt; CoreExpr -&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr))
</span><a href="#local-6989586621681181706"><span class="hs-identifier hs-var hs-var">replaceStatic</span></a></span></span><span> </span><span id="local-6989586621681181694"><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181694"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621681181693"><span class="annot"><span class="annottext">e :: CoreExpr
</span><a href="#local-6989586621681181693"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; ([CoreBndr], CoreExpr)
</span><a href="GHC.Core.html#collectTyBinders"><span class="hs-identifier hs-var">collectTyBinders</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681181691"><span class="annot"><span class="annottext">[CoreBndr]
</span><a href="#local-6989586621681181691"><span class="hs-identifier hs-var">tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181690"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181690"><span class="hs-identifier hs-var">e0</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-197"></span><span>      </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; Maybe (CoreExpr, Type, CoreExpr, CoreExpr)
</span><a href="GHC.Core.Utils.html#collectMakeStaticArgs"><span class="hs-identifier hs-var">collectMakeStaticArgs</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181690"><span class="hs-identifier hs-var">e0</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-198"></span><span>        </span><span class="annot"><span class="annottext">Maybe (CoreExpr, Type, CoreExpr, CoreExpr)
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(Maybe SptEntry, (CoreBndr, CoreExpr))
-&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr))
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe SptEntry
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181694"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181693"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-199"></span><span>        </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181689"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621681181689"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181688"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181688"><span class="hs-identifier hs-var">info</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181687"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181687"><span class="hs-identifier hs-var">arg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-200"></span><span>          </span><span class="hs-special">(</span><span id="local-6989586621681181686"><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181686"><span class="hs-identifier hs-var">fp</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681181685"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181685"><span class="hs-identifier hs-var">e'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type
-&gt; CoreExpr -&gt; CoreExpr -&gt; StateT Int IO (Fingerprint, CoreExpr)
</span><a href="#local-6989586621681181684"><span class="hs-identifier hs-var">mkStaticBind</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621681181689"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181688"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181687"><span class="hs-identifier hs-var">arg</span></a></span><span>
</span><span id="line-201"></span><span>          </span><span class="annot"><span class="annottext">(Maybe SptEntry, (CoreBndr, CoreExpr))
-&gt; StateT Int IO (Maybe SptEntry, (CoreBndr, CoreExpr))
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SptEntry -&gt; Maybe SptEntry
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr -&gt; Fingerprint -&gt; SptEntry
</span><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-var">SptEntry</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181694"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181686"><span class="hs-identifier hs-var">fp</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181694"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(CoreBndr -&gt; CoreExpr -&gt; CoreExpr)
-&gt; CoreExpr -&gt; [CoreBndr] -&gt; CoreExpr
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr -&gt; CoreExpr -&gt; CoreExpr
forall b. b -&gt; Expr b -&gt; Expr b
</span><a href="GHC.Core.html#Lam"><span class="hs-identifier hs-var">Lam</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181685"><span class="hs-identifier hs-var">e'</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreBndr]
</span><a href="#local-6989586621681181691"><span class="hs-identifier hs-var">tvs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-202"></span><span>
</span><span id="line-203"></span><span>    </span><span class="annot"><a href="#local-6989586621681181684"><span class="hs-identifier hs-type">mkStaticBind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span>
</span><span id="line-204"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../transformers/src/Control.Monad.Trans.State.Lazy.html#StateT"><span class="hs-identifier hs-type">StateT</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-205"></span><span>    </span><span id="local-6989586621681181684"><span class="annot"><span class="annottext">mkStaticBind :: Type
-&gt; CoreExpr -&gt; CoreExpr -&gt; StateT Int IO (Fingerprint, CoreExpr)
</span><a href="#local-6989586621681181684"><span class="hs-identifier hs-var hs-var">mkStaticBind</span></a></span></span><span> </span><span id="local-6989586621681181680"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621681181680"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621681181679"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181679"><span class="hs-identifier hs-var">srcLoc</span></a></span></span><span> </span><span id="local-6989586621681181678"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181678"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-206"></span><span>      </span><span id="local-6989586621681181677"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181677"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">StateT Int IO Int
forall (m :: * -&gt; *) s. Monad m =&gt; StateT s m s
</span><a href="../../transformers/src/Control.Monad.Trans.State.Lazy.html#get"><span class="hs-identifier hs-var">get</span></a></span><span>
</span><span id="line-207"></span><span>      </span><span class="annot"><span class="annottext">Int -&gt; StateT Int IO ()
forall (m :: * -&gt; *) s. Monad m =&gt; s -&gt; StateT s m ()
</span><a href="../../transformers/src/Control.Monad.Trans.State.Lazy.html#put"><span class="hs-identifier hs-var">put</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181677"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-208"></span><span>      </span><span id="local-6989586621681181673"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621681181673"><span class="hs-identifier hs-var">staticPtrInfoDataCon</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><span id="line-209"></span><span>        </span><span class="annot"><span class="annottext">IO DataCon -&gt; StateT Int IO DataCon
forall (t :: (* -&gt; *) -&gt; * -&gt; *) (m :: * -&gt; *) a.
(MonadTrans t, Monad m) =&gt;
m a -&gt; t m a
</span><a href="../../transformers/src/Control.Monad.Trans.Class.html#lift"><span class="hs-identifier hs-var">lift</span></a></span><span> </span><span class="annot"><span class="annottext">(IO DataCon -&gt; StateT Int IO DataCon)
-&gt; IO DataCon -&gt; StateT Int IO DataCon
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; IO DataCon
</span><a href="#local-6989586621681181672"><span class="hs-identifier hs-var">lookupDataConHscEnv</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#staticPtrInfoDataConName"><span class="hs-identifier hs-var">staticPtrInfoDataConName</span></a></span><span>
</span><span id="line-210"></span><span>      </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681181670"><span class="annot"><span class="annottext">fp :: Fingerprint
</span><a href="#local-6989586621681181670"><span class="hs-identifier hs-var">fp</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span> </span><span id="local-6989586621681181669"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181669"><span class="hs-identifier hs-var">w0</span></a></span></span><span> </span><span id="local-6989586621681181668"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181668"><span class="hs-identifier hs-var">w1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Fingerprint
</span><a href="#local-6989586621681181667"><span class="hs-identifier hs-var">mkStaticPtrFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181677"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-211"></span><span>      </span><span id="local-6989586621681181666"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181666"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [CoreExpr] -&gt; CoreExpr
forall b. DataCon -&gt; [Arg b] -&gt; Arg b
</span><a href="GHC.Core.html#mkConApp"><span class="hs-identifier hs-var">mkConApp</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621681181673"><span class="hs-identifier hs-var">staticPtrInfoDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">([CoreExpr] -&gt; CoreExpr)
-&gt; ([CoreExpr] -&gt; [CoreExpr]) -&gt; [CoreExpr] -&gt; CoreExpr
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span>
</span><span id="line-212"></span><span>            </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[CoreExpr] -&gt; [CoreExpr] -&gt; [CoreExpr]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span class="hs-special">[</span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181679"><span class="hs-identifier hs-var">srcLoc</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">([CoreExpr] -&gt; CoreExpr)
-&gt; StateT Int IO [CoreExpr] -&gt; StateT Int IO CoreExpr
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span>
</span><span id="line-213"></span><span>            </span><span class="annot"><span class="annottext">(FastString -&gt; StateT Int IO CoreExpr)
-&gt; [FastString] -&gt; StateT Int IO [CoreExpr]
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Traversable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m (t b)
</span><a href="../../base/src/Data.Traversable.html#mapM"><span class="hs-identifier hs-var">mapM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Name -&gt; StateT Int IO CoreBndr)
-&gt; FastString -&gt; StateT Int IO CoreExpr
forall (m :: * -&gt; *).
Monad m =&gt;
(Name -&gt; m CoreBndr) -&gt; FastString -&gt; m CoreExpr
</span><a href="GHC.Core.Make.html#mkStringExprFSWith"><span class="hs-identifier hs-var">mkStringExprFSWith</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IO CoreBndr -&gt; StateT Int IO CoreBndr
forall (t :: (* -&gt; *) -&gt; * -&gt; *) (m :: * -&gt; *) a.
(MonadTrans t, Monad m) =&gt;
m a -&gt; t m a
</span><a href="../../transformers/src/Control.Monad.Trans.Class.html#lift"><span class="hs-identifier hs-var">lift</span></a></span><span> </span><span class="annot"><span class="annottext">(IO CoreBndr -&gt; StateT Int IO CoreBndr)
-&gt; (Name -&gt; IO CoreBndr) -&gt; Name -&gt; StateT Int IO CoreBndr
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; IO CoreBndr
</span><a href="#local-6989586621681181663"><span class="hs-identifier hs-var">lookupIdHscEnv</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-214"></span><span>                 </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Unit -&gt; FastString
</span><a href="GHC.Unit.Types.html#unitFS"><span class="hs-identifier hs-var">unitFS</span></a></span><span> </span><span class="annot"><span class="annottext">(Unit -&gt; FastString) -&gt; Unit -&gt; FastString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; Unit
forall unit. GenModule unit -&gt; unit
</span><a href="GHC.Unit.Types.html#moduleUnit"><span class="hs-identifier hs-var hs-var">moduleUnit</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181738"><span class="hs-identifier hs-var">this_mod</span></a></span><span>
</span><span id="line-215"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ModuleName -&gt; FastString
</span><a href="GHC.Unit.Module.Name.html#moduleNameFS"><span class="hs-identifier hs-var">moduleNameFS</span></a></span><span> </span><span class="annot"><span class="annottext">(ModuleName -&gt; FastString) -&gt; ModuleName -&gt; FastString
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; ModuleName
forall unit. GenModule unit -&gt; ModuleName
</span><a href="GHC.Unit.Types.html#moduleName"><span class="hs-identifier hs-var hs-var">moduleName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181738"><span class="hs-identifier hs-var">this_mod</span></a></span><span>
</span><span id="line-216"></span><span>                 </span><span class="hs-special">]</span><span>
</span><span id="line-217"></span><span>
</span><span id="line-218"></span><span>      </span><span class="hs-comment">-- The module interface of GHC.StaticPtr should be loaded at least</span><span>
</span><span id="line-219"></span><span>      </span><span class="hs-comment">-- when looking up 'fromStatic' during type-checking.</span><span>
</span><span id="line-220"></span><span>      </span><span id="local-6989586621681181658"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621681181658"><span class="hs-identifier hs-var">staticPtrDataCon</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">IO DataCon -&gt; StateT Int IO DataCon
forall (t :: (* -&gt; *) -&gt; * -&gt; *) (m :: * -&gt; *) a.
(MonadTrans t, Monad m) =&gt;
m a -&gt; t m a
</span><a href="../../transformers/src/Control.Monad.Trans.Class.html#lift"><span class="hs-identifier hs-var">lift</span></a></span><span> </span><span class="annot"><span class="annottext">(IO DataCon -&gt; StateT Int IO DataCon)
-&gt; IO DataCon -&gt; StateT Int IO DataCon
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; IO DataCon
</span><a href="#local-6989586621681181672"><span class="hs-identifier hs-var">lookupDataConHscEnv</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Builtin.Names.html#staticPtrDataConName"><span class="hs-identifier hs-var">staticPtrDataConName</span></a></span><span>
</span><span id="line-221"></span><span>      </span><span class="annot"><span class="annottext">(Fingerprint, CoreExpr) -&gt; StateT Int IO (Fingerprint, CoreExpr)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181670"><span class="hs-identifier hs-var">fp</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [CoreExpr] -&gt; CoreExpr
forall b. DataCon -&gt; [Arg b] -&gt; Arg b
</span><a href="GHC.Core.html#mkConApp"><span class="hs-identifier hs-var">mkConApp</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621681181658"><span class="hs-identifier hs-var">staticPtrDataCon</span></a></span><span>
</span><span id="line-222"></span><span>                               </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Type -&gt; CoreExpr
forall b. Type -&gt; Expr b
</span><a href="GHC.Core.html#Type"><span class="hs-identifier hs-var">Type</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621681181680"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-223"></span><span>                               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Word64 -&gt; CoreExpr
forall {b}. Platform -&gt; Word64 -&gt; Expr b
</span><a href="#local-6989586621681181655"><span class="hs-identifier hs-var">mkWord64LitWordRep</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681181714"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181669"><span class="hs-identifier hs-var">w0</span></a></span><span>
</span><span id="line-224"></span><span>                               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Word64 -&gt; CoreExpr
forall {b}. Platform -&gt; Word64 -&gt; Expr b
</span><a href="#local-6989586621681181655"><span class="hs-identifier hs-var">mkWord64LitWordRep</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681181714"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181668"><span class="hs-identifier hs-var">w1</span></a></span><span>
</span><span id="line-225"></span><span>                               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181666"><span class="hs-identifier hs-var">info</span></a></span><span>
</span><span id="line-226"></span><span>                               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621681181678"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-227"></span><span>
</span><span id="line-228"></span><span>    </span><span class="annot"><a href="#local-6989586621681181667"><span class="hs-identifier hs-type">mkStaticPtrFingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-229"></span><span>    </span><span id="local-6989586621681181667"><span class="annot"><span class="annottext">mkStaticPtrFingerprint :: Int -&gt; Fingerprint
</span><a href="#local-6989586621681181667"><span class="hs-identifier hs-var hs-var">mkStaticPtrFingerprint</span></a></span></span><span> </span><span id="local-6989586621681181654"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181654"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Fingerprint
</span><a href="../../base/src/GHC.Fingerprint.html#fingerprintString"><span class="hs-identifier hs-var">fingerprintString</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; Fingerprint) -&gt; String -&gt; Fingerprint
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; [String] -&gt; String
forall a. [a] -&gt; [[a]] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#intercalate"><span class="hs-identifier hs-var">intercalate</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;:&quot;</span></span><span>
</span><span id="line-230"></span><span>        </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Unit -&gt; String
</span><a href="GHC.Unit.Types.html#unitString"><span class="hs-identifier hs-var">unitString</span></a></span><span> </span><span class="annot"><span class="annottext">(Unit -&gt; String) -&gt; Unit -&gt; String
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; Unit
forall unit. GenModule unit -&gt; unit
</span><a href="GHC.Unit.Types.html#moduleUnit"><span class="hs-identifier hs-var hs-var">moduleUnit</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181738"><span class="hs-identifier hs-var">this_mod</span></a></span><span>
</span><span id="line-231"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ModuleName -&gt; String
</span><a href="GHC.Unit.Module.Name.html#moduleNameString"><span class="hs-identifier hs-var">moduleNameString</span></a></span><span> </span><span class="annot"><span class="annottext">(ModuleName -&gt; String) -&gt; ModuleName -&gt; String
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; ModuleName
forall unit. GenModule unit -&gt; ModuleName
</span><a href="GHC.Unit.Types.html#moduleName"><span class="hs-identifier hs-var hs-var">moduleName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181738"><span class="hs-identifier hs-var">this_mod</span></a></span><span>
</span><span id="line-232"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181654"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-233"></span><span>        </span><span class="hs-special">]</span><span>
</span><span id="line-234"></span><span>
</span><span id="line-235"></span><span>    </span><span class="hs-comment">-- Choose either 'Word64#' or 'Word#' to represent the arguments of the</span><span>
</span><span id="line-236"></span><span>    </span><span class="hs-comment">-- 'Fingerprint' data constructor.</span><span>
</span><span id="line-237"></span><span>    </span><span id="local-6989586621681181655"><span class="annot"><span class="annottext">mkWord64LitWordRep :: Platform -&gt; Word64 -&gt; Expr b
</span><a href="#local-6989586621681181655"><span class="hs-identifier hs-var hs-var">mkWord64LitWordRep</span></a></span></span><span> </span><span id="local-6989586621681181647"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681181647"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-238"></span><span>      </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; PlatformWordSize
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSize"><span class="hs-identifier hs-var hs-var">platformWordSize</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681181647"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-239"></span><span>        </span><span class="annot"><span class="annottext">PlatformWordSize
</span><a href="../../ghc-boot/src/GHC.Platform.html#PW4"><span class="hs-identifier hs-var">PW4</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Expr b
forall b. Word64 -&gt; Expr b
</span><a href="GHC.Core.html#mkWord64LitWord64"><span class="hs-identifier hs-var">mkWord64LitWord64</span></a></span><span>
</span><span id="line-240"></span><span>        </span><span class="annot"><span class="annottext">PlatformWordSize
</span><a href="../../ghc-boot/src/GHC.Platform.html#PW8"><span class="hs-identifier hs-var">PW8</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; Expr b
forall b. Platform -&gt; Integer -&gt; Expr b
</span><a href="GHC.Core.html#mkWordLit"><span class="hs-identifier hs-var">mkWordLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681181647"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">(Integer -&gt; Expr b) -&gt; (Word64 -&gt; Integer) -&gt; Word64 -&gt; Expr b
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Integer
forall a. Integral a =&gt; a -&gt; Integer
</span><a href="../../base/src/GHC.Real.html#toInteger"><span class="hs-identifier hs-var">toInteger</span></a></span><span>
</span><span id="line-241"></span><span>
</span><span id="line-242"></span><span>    </span><span class="annot"><a href="#local-6989586621681181663"><span class="hs-identifier hs-type">lookupIdHscEnv</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-243"></span><span>    </span><span id="local-6989586621681181663"><span class="annot"><span class="annottext">lookupIdHscEnv :: Name -&gt; IO CoreBndr
</span><a href="#local-6989586621681181663"><span class="hs-identifier hs-var hs-var">lookupIdHscEnv</span></a></span></span><span> </span><span id="local-6989586621681181641"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621681181641"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HscEnv -&gt; Name -&gt; IO (Maybe TyThing)
</span><a href="GHC.Driver.Types.html#lookupTypeHscEnv"><span class="hs-identifier hs-var">lookupTypeHscEnv</span></a></span><span> </span><span class="annot"><span class="annottext">HscEnv
</span><a href="#local-6989586621681181739"><span class="hs-identifier hs-var">hsc_env</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621681181641"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">IO (Maybe TyThing) -&gt; (Maybe TyThing -&gt; IO CoreBndr) -&gt; IO CoreBndr
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var">&gt;&gt;=</span></a></span><span>
</span><span id="line-244"></span><span>                         </span><span class="annot"><span class="annottext">IO CoreBndr
-&gt; (TyThing -&gt; IO CoreBndr) -&gt; Maybe TyThing -&gt; IO CoreBndr
forall b a. b -&gt; (a -&gt; b) -&gt; Maybe a -&gt; b
</span><a href="../../base/src/Data.Maybe.html#maybe"><span class="hs-identifier hs-var">maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; IO CoreBndr
forall {a} {a}. Outputable a =&gt; a -&gt; a
</span><a href="#local-6989586621681181638"><span class="hs-identifier hs-var">getError</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621681181641"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr -&gt; IO CoreBndr
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(CoreBndr -&gt; IO CoreBndr)
-&gt; (TyThing -&gt; CoreBndr) -&gt; TyThing -&gt; IO CoreBndr
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; TyThing -&gt; CoreBndr
TyThing -&gt; CoreBndr
</span><a href="GHC.Driver.Types.html#tyThingId"><span class="hs-identifier hs-var">tyThingId</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-245"></span><span>
</span><span id="line-246"></span><span>    </span><span class="annot"><a href="#local-6989586621681181672"><span class="hs-identifier hs-type">lookupDataConHscEnv</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-247"></span><span>    </span><span id="local-6989586621681181672"><span class="annot"><span class="annottext">lookupDataConHscEnv :: Name -&gt; IO DataCon
</span><a href="#local-6989586621681181672"><span class="hs-identifier hs-var hs-var">lookupDataConHscEnv</span></a></span></span><span> </span><span id="local-6989586621681181636"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621681181636"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HscEnv -&gt; Name -&gt; IO (Maybe TyThing)
</span><a href="GHC.Driver.Types.html#lookupTypeHscEnv"><span class="hs-identifier hs-var">lookupTypeHscEnv</span></a></span><span> </span><span class="annot"><span class="annottext">HscEnv
</span><a href="#local-6989586621681181739"><span class="hs-identifier hs-var">hsc_env</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621681181636"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">IO (Maybe TyThing) -&gt; (Maybe TyThing -&gt; IO DataCon) -&gt; IO DataCon
forall (m :: * -&gt; *) a b. Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b
</span><a href="../../base/src/GHC.Base.html#%3E%3E%3D"><span class="hs-operator hs-var">&gt;&gt;=</span></a></span><span>
</span><span id="line-248"></span><span>                              </span><span class="annot"><span class="annottext">IO DataCon
-&gt; (TyThing -&gt; IO DataCon) -&gt; Maybe TyThing -&gt; IO DataCon
forall b a. b -&gt; (a -&gt; b) -&gt; Maybe a -&gt; b
</span><a href="../../base/src/Data.Maybe.html#maybe"><span class="hs-identifier hs-var">maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; IO DataCon
forall {a} {a}. Outputable a =&gt; a -&gt; a
</span><a href="#local-6989586621681181638"><span class="hs-identifier hs-var">getError</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621681181636"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; IO DataCon
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">(DataCon -&gt; IO DataCon)
-&gt; (TyThing -&gt; DataCon) -&gt; TyThing -&gt; IO DataCon
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; TyThing -&gt; DataCon
TyThing -&gt; DataCon
</span><a href="GHC.Driver.Types.html#tyThingDataCon"><span class="hs-identifier hs-var">tyThingDataCon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-249"></span><span>
</span><span id="line-250"></span><span>    </span><span id="local-6989586621681181638"><span class="annot"><span class="annottext">getError :: a -&gt; a
</span><a href="#local-6989586621681181638"><span class="hs-identifier hs-var hs-var">getError</span></a></span></span><span> </span><span id="local-6989586621681181630"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681181630"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; a
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;sptCreateStaticBinds.get: not found&quot;</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; a) -&gt; SDoc -&gt; a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-251"></span><span>      </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Couldn't find&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681181630"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-252"></span><span>
</span><span id="line-253"></span><span class="hs-comment">-- | @sptModuleInitCode module fps@ is a C stub to insert the static entries</span><span>
</span><span id="line-254"></span><span class="hs-comment">-- of @module@ into the static pointer table.</span><span>
</span><span id="line-255"></span><span class="hs-comment">--</span><span>
</span><span id="line-256"></span><span class="hs-comment">-- @fps@ is a list associating each binding corresponding to a static entry with</span><span>
</span><span id="line-257"></span><span class="hs-comment">-- its fingerprint.</span><span>
</span><span id="line-258"></span><span class="annot"><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptModuleInitCode"><span class="hs-identifier hs-type">sptModuleInitCode</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-type">SptEntry</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-259"></span><span id="sptModuleInitCode"><span class="annot"><span class="annottext">sptModuleInitCode :: Module -&gt; [SptEntry] -&gt; SDoc
</span><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptModuleInitCode"><span class="hs-identifier hs-var hs-var">sptModuleInitCode</span></a></span></span><span> </span><span class="annot"><span class="annottext">Module
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">Outputable.empty</span></a></span><span>
</span><span id="line-260"></span><span class="annot"><a href="GHC.Iface.Tidy.StaticPtrTable.html#sptModuleInitCode"><span class="hs-identifier hs-var">sptModuleInitCode</span></a></span><span> </span><span id="local-6989586621681181624"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181624"><span class="hs-identifier hs-var">this_mod</span></a></span></span><span> </span><span id="local-6989586621681181623"><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181623"><span class="hs-identifier hs-var">entries</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span>
</span><span id="line-261"></span><span>    </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static void hs_spt_init_&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181624"><span class="hs-identifier hs-var">this_mod</span></a></span><span>
</span><span id="line-262"></span><span>           </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(void) __attribute__((constructor));&quot;</span></span><span>
</span><span id="line-263"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static void hs_spt_init_&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181624"><span class="hs-identifier hs-var">this_mod</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(void)&quot;</span></span><span>
</span><span id="line-264"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-265"></span><span>        </span><span class="hs-special">[</span><span>  </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static StgWord64 k&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181618"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;[2] = &quot;</span></span><span>
</span><span id="line-266"></span><span>           </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint -&gt; SDoc
</span><a href="#local-6989586621681181617"><span class="hs-identifier hs-var">pprFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181616"><span class="hs-identifier hs-var">fp</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-267"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;extern StgPtr &quot;</span></span><span>
</span><span id="line-268"></span><span>           </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">(CLabel -&gt; SDoc) -&gt; CLabel -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Name -&gt; CafInfo -&gt; CLabel
</span><a href="GHC.Cmm.CLabel.html#mkClosureLabel"><span class="hs-identifier hs-var">mkClosureLabel</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr -&gt; Name
</span><a href="GHC.Types.Id.html#idName"><span class="hs-identifier hs-var">idName</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181611"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr -&gt; CafInfo
</span><a href="GHC.Types.Id.html#idCafInfo"><span class="hs-identifier hs-var">idCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181611"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-269"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;hs_spt_insert&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span>
</span><span id="line-270"></span><span>             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span>
</span><span id="line-271"></span><span>                </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'k'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181618"><span class="hs-identifier hs-var">i</span></a></span><span>
</span><span id="line-272"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'&amp;'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; CafInfo -&gt; CLabel
</span><a href="GHC.Cmm.CLabel.html#mkClosureLabel"><span class="hs-identifier hs-var">mkClosureLabel</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr -&gt; Name
</span><a href="GHC.Types.Id.html#idName"><span class="hs-identifier hs-var">idName</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181611"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreBndr -&gt; CafInfo
</span><a href="GHC.Types.Id.html#idCafInfo"><span class="hs-identifier hs-var">idCafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181611"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-273"></span><span>                </span><span class="hs-special">]</span><span>
</span><span id="line-274"></span><span>             </span><span class="hs-special">)</span><span>
</span><span id="line-275"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-276"></span><span>        </span><span class="hs-glyph">|</span><span>  </span><span class="hs-special">(</span><span id="local-6989586621681181618"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181618"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-type">SptEntry</span></a></span><span> </span><span id="local-6989586621681181611"><span class="annot"><span class="annottext">CoreBndr
</span><a href="#local-6989586621681181611"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621681181616"><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181616"><span class="hs-identifier hs-var">fp</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Int] -&gt; [SptEntry] -&gt; [(Int, SptEntry)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181623"><span class="hs-identifier hs-var">entries</span></a></span><span>
</span><span id="line-277"></span><span>        </span><span class="hs-special">]</span><span>
</span><span id="line-278"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static void hs_spt_fini_&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181624"><span class="hs-identifier hs-var">this_mod</span></a></span><span>
</span><span id="line-279"></span><span>           </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(void) __attribute__((destructor));&quot;</span></span><span>
</span><span id="line-280"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static void hs_spt_fini_&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Module -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621681181624"><span class="hs-identifier hs-var">this_mod</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;(void)&quot;</span></span><span>
</span><span id="line-281"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-282"></span><span>        </span><span class="hs-special">[</span><span>  </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;StgWord64 k&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181604"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;[2] = &quot;</span></span><span>
</span><span id="line-283"></span><span>           </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint -&gt; SDoc
</span><a href="#local-6989586621681181617"><span class="hs-identifier hs-var">pprFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181603"><span class="hs-identifier hs-var">fp</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-284"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;hs_spt_remove&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'k'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#int"><span class="hs-identifier hs-var">int</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181604"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span>
</span><span id="line-285"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681181604"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681181604"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Runtime.Linker.Types.html#SptEntry"><span class="hs-identifier hs-type">SptEntry</span></a></span><span> </span><span class="annot"><span class="annottext">CoreBndr
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681181603"><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621681181603"><span class="hs-identifier hs-var">fp</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Int] -&gt; [SptEntry] -&gt; [(Int, SptEntry)]
forall a b. [a] -&gt; [b] -&gt; [(a, b)]
</span><a href="../../base/src/GHC.List.html#zip"><span class="hs-identifier hs-var">zip</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-glyph">..</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[SptEntry]
</span><a href="#local-6989586621681181623"><span class="hs-identifier hs-var">entries</span></a></span><span>
</span><span id="line-286"></span><span>        </span><span class="hs-special">]</span><span>
</span><span id="line-287"></span><span>    </span><span class="hs-special">]</span><span>
</span><span id="line-288"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-289"></span><span>    </span><span class="annot"><a href="#local-6989586621681181617"><span class="hs-identifier hs-type">pprFingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-290"></span><span>    </span><span id="local-6989586621681181617"><span class="annot"><span class="annottext">pprFingerprint :: Fingerprint -&gt; SDoc
</span><a href="#local-6989586621681181617"><span class="hs-identifier hs-var hs-var">pprFingerprint</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span> </span><span id="local-6989586621681181602"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181602"><span class="hs-identifier hs-var">w1</span></a></span></span><span> </span><span id="local-6989586621681181601"><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181601"><span class="hs-identifier hs-var">w2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-291"></span><span>      </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span>
</span><span id="line-292"></span><span>                 </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#integer"><span class="hs-identifier hs-var">integer</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181602"><span class="hs-identifier hs-var">w1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ULL&quot;</span></span><span>
</span><span id="line-293"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#integer"><span class="hs-identifier hs-var">integer</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word64 -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Word64
</span><a href="#local-6989586621681181601"><span class="hs-identifier hs-var">w2</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;ULL&quot;</span></span><span>
</span><span id="line-294"></span><span>                 </span><span class="hs-special">]</span><span>
</span><span id="line-295"></span></pre></body></html>